package com.majie.aop.jdk;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class EatHandler implements InvocationHandler {

	// 要代理的目标对象
	private Object target;

	public EatHandler(Object target) {
		this.target = target;
	}

	public Object proxyInstance( ) {
		// 第一个参数就是要加载代理对象的类加载器，
		// 第二个参数就是要代理类实现的接口
		// 第三个参数就是EatHandler
		return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this);
	}

	@Override
	public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
		System.out.println("吃饭前要洗手");
		Object result = method.invoke(this.target, args);
		System.out.println("吃饭后要洗碗");
		return result;
	}
}
